package com.alan.mr.weibo;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import java.io.IOException;

/**
 * 计算 DF的值, 在多少个文章中出现过
 * DF:当前的关键字在所有微博内容中出现的微博条数 比如：九阳，在某条微博中出现4次，只计为1条
 * Created by Alan on 2017/10/2.
 */
public class SecondMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        // 获取当前maptask的数据片段
        FileSplit inputSplit = (FileSplit) context.getInputSplit();
        // count不被统计 即FirstJob的是第个分区（计总条数用的）不要
        if (!inputSplit.getPath().getName().contains("part-r-00003")) {
            String[] values = value.toString().trim().split("\t");
            if (values.length >= 2) {
                String[] split = values[0].trim().split("_");
                if (split.length >= 2) {
                    String id = split[0];//关键字
                    //计数 split[1]（为用户ID） 中为其在该条微博中的出现的次数
                    context.write(new Text(id), new IntWritable(1));
                }
            }
        }else {
            System.out.println(value.toString() + "----");
        }
    }
}
